<?php

namespace Proyecto\MainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Proyecto\MainBundle\Entity\LabelConEstilo;
use Proyecto\MainBundle\Entity\DatoConEstilo;
use Proyecto\MainBundle\Entity\SeparadorConEstilo;
use Proyecto\MainBundle\Entity\DatoItem;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class UserCvController extends Controller
{
	/**
     * Muestra el cv.
     *
     * @Route("/user/mostrarcv", name="mostrar_cv_propio")
     * @Template("ProyectoMainBundle:Busqueda:mostrar_cv_con_formato.html.twig")
     */
 	public function mostrarCvAction(Request $request)
	{
		$resultado = $this->getUser()->getId();
		$idPlantilla= $request->request->get('id');
		$em=$this->getDoctrine()->getmanager();
		$consulta="Select e From ProyectoMainBundle:UsuariosPlantillas e, ProyectoMainBundle:Plantilla p Where e.usuario= :idUsuario and e.plantilla= :idPlantilla and e.plantilla=p.id and p.activo=1";
		$query = $em->createQuery($consulta);
		$query->setParameter('idPlantilla', $idPlantilla);
		$query->setParameter('idUsuario', $resultado);
		$existe=(count($query->getResult() ))>0;
		if ($existe){
			$elementos=$em->getRepository('ProyectoMainBundle:Elemento')->findByPlantilla($idPlantilla);
			$datos=array();
			$error=null;
			$datos_item='';
			foreach ($elementos as $elemento){
				$dato=$this->datoPara($resultado,$elemento); 
				if ($dato){
					$datos[$dato->getOrden()]=$dato;
				}
			}
		}
		else{
			$datos='';
			$error='El usuario no posee esta plantilla o la misma est� desactivada';
		}
		$resul=$resultado;
		$items='';
		$tipos='';
		$descripciones='';
		return  array(
		'error'=>$error,
		'datos'=>$datos,
		'items'=>$items,
		'tipos'=>$tipos,
		'descripciones' => $descripciones);
	}
	
	/**
     * Muestra las plantillas disponibles.
     *
     * @Route("/user/mostrarcat", name="mostrar_categorias")
     * @Template("ProyectoMainBundle:Busqueda:mostrar_categorias.html.twig")
     */
	public function mostrarCategoriasAction()
	{
		$id = $this->getUser()->getId();
		$em=$this->getDoctrine()->getManager();
		$consulta="Select p From ProyectoMainBundle:Plantilla p, ProyectoMainBundle:UsuariosPlantillas up Where up.usuario = :id  and up.plantilla = p.id and p.activo=1";
		$query = $em->createQuery($consulta)->setParameter('id',$id);
		$plantillas=$query->getResult();
		return array('plantillas'=>$plantillas);
	}
	
	/*
     * Arma los Datos según el tipo que sean.
	*/
	public function datoPara($usuario,$elemento){
		switch ($elemento->getTipo()) {
			case 'label':
				return new LabelConEstilo($elemento->getValor(),$elemento->getOrden(),$elemento->getEstilo(),$elemento->getId());
				break;
			case 'separador':
				$em=$this->getDoctrine()->getManager();
				$consulta =("SELECT s FROM ProyectoMainBundle:Separador s where s.id= :id");
				$query = $em->createQuery($consulta)->setParameter('id',$elemento->getValor());
				$resultado=$query->getResult();
				if ($resultado){
					return new SeparadorConEstilo($resultado[0]->getCodigo(),$elemento->getOrden(),$elemento->getEstilo(),$elemento->getId());
				}
				else{
					return null;
				}
				
				break;
			case 'item':
				$em=$this->getDoctrine()->getManager();
				$consulta="Select d From ProyectoMainBundle:DatoItem d , ProyectoMainBundle:Item t  Where t.id= :id and d.idUsuario= :usuario and t.id=d.idItem";
				$query=$em->createQuery($consulta);
				$query->setParameter('id',$elemento->getValor());
				$query->setParameter('usuario',$usuario);
				$datos_item =$query->getResult();
				$consulta="Select t From ProyectoMainBundle:DatoItem d , ProyectoMainBundle:Item t  Where t.id= :id and d.idUsuario= :usuario and t.id=d.idItem";
				$query=$em->createQuery($consulta);
				$query->setParameter('id',$elemento->getValor());
				$query->setParameter('usuario',$usuario);
				$items =$query->getResult();
				$datos=array();
				$descripcion=null;
				foreach ($datos_item as $i=>$valor){
					if (!$descripcion){
						$item=$em->getRepository('ProyectoMainBundle:Item')->findById($valor->getIdItem());
						$descripcion=$item[0]->getDescripcion();
					}
					$dato=new DatoItem;
					$dato->construct($usuario,$item[0],$valor->getContenido(),$valor->getFechaInicio(),$valor->getFechaFin(),$valor->getEntidadOtorgante(),$valor->getEntidadDestinataria(),$valor->getCaracter());
					$dato->setId($valor->getId());
					$datos[]=$dato;
				}
				if ($datos){
					return new DatoConEstilo($datos,$elemento->getOrden(),$elemento->getEstilo(),$elemento->getId(),$descripcion);
				}
				else{
					return null;
				}
				break;
				break;
		}
	}
}


